package com.jgzx.constant.inventory;

import cn.hutool.core.util.StrUtil;

/**
 * 出库单据类型【销售出库、调拨出库、组装出库、拆分出库、采购退货、报损单】
 * @author libo
 * @date 2021-03-19
 */
public enum OutStockBillTypeEnum {

    /** 销售出库【XSCK】 */
    SALE_OUT_STOCK("XSCK", "销售出库"),
    /** 调拨出库【DBCK】 */
    TRANSFER_OUT_STOCK("DBCK", "调拨出库"),
    /** 组装出库【ZZCK】 */
    ASSEMBLE_OUT_STOCK("ZZCK", "组装出库"),
    /** 拆分出库【CFCK】 */
    SPLIT_OUT_STOCK("CFCK", "拆分出库"),
    /** 采购退货【CGTH】 */
    PURCHASE_OUT_STOCK("CGTH","采购退货"),
    /** 报损单【BSDJ】 */
    LOSS_OUT_STOCK("BSDJ","报损单"),
    /** 其它出库【QTCK】 */
    OTHER_OUT_STOCK("QTCK","其它出库"),
    /** 材料出库【CLCK】*/
    REQUISITION_OUT_STOCK("CLCK", "材料出库"),
    /** 生产退货【CPTK】 */
    PRODUCT_OUT_STOCK("CPTK", "生产退货"),
    /** 期初出库【QCCK】 */
    PERIOD_OUT_STOCK("QCCK","期初出库"),
    ;

    private final String value;
    private final String showName;

    /**
     * @param value 值
     * @param showName 显示名称
     */
    OutStockBillTypeEnum(String value, String showName){
        this.value = value;
        this.showName = showName;
    }

    /**
     * 通过单据类型值获取枚举对象
     * @param value 单据类型值
     * @return 单据类型枚举
     */
    public static OutStockBillTypeEnum getOutStockBillTypeByValue(String value){
        for(OutStockBillTypeEnum billCategory : OutStockBillTypeEnum.values()){
            if(StrUtil.equals(value, billCategory.value())){
                return billCategory;
            }
        }
        return null;
    }

    public String value() {
        return this.value;
    }

    public String showName() {
        return this.showName;
    }

}
